package com.telemetrymng;

import java.util.ArrayList;
import java.util.List;

import com.telemetrymng.data.DisplayData;

public class TelemetryManager {
	
	private static DisplayData display;	

	public static List<String> getParamValuesByLap(String paramName, int lap) {
		
		//calcular el indice de las muestras iniciales y finales de vuelta
		Integer initialSample = null;
		Integer finalSample = null;
		List<String> lapValues = display.getTelemetry().getTelemetryValues().get("Lap");
		List<String> paramValues = new ArrayList<String>(display.getTelemetry().getTelemetryValues().get(paramName));
		for (int i = 0; i < lapValues.size(); i++) {
			if (initialSample == null && lapValues.get(i).equals(String.valueOf(lap))) {
				//es el indice inicial de esa vuelta
				initialSample = Integer.valueOf(i);
			} else if (finalSample == null && lapValues.get(i).equals(String.valueOf(lap + 1))) {
				//es el indice posterior al final de esa vuelta
				finalSample = Integer.valueOf(i-1);
			} 
			if (initialSample != null && finalSample != null) {
				break;
			}
		}
		
		if (finalSample == null) {
			//es el indice final por ser la ultima vuelta 
			finalSample = lapValues.size()-1;
		}
		
		return paramValues.subList(initialSample, finalSample+1);

	}
	
	public static DisplayData getDisplay() {
		return display;
	}
	
	public static void setDisplayData(DisplayData data) {
		display = data;
	}
	
}
